package com.net.wanjian.networkhospitalmanager.net;

import com.net.wanjian.networkhospitalmanager.bean.DeviceOperationListResult;
import com.net.wanjian.networkhospitalmanager.bean.EnterLabResult;
import com.net.wanjian.networkhospitalmanager.bean.GetHospitalListReturn;
import com.net.wanjian.networkhospitalmanager.bean.LabReserveDetailResult;
import com.net.wanjian.networkhospitalmanager.bean.LabReserveListReturn;
import com.net.wanjian.networkhospitalmanager.bean.LoginReturn;
import com.net.wanjian.networkhospitalmanager.bean.ScanDeviceQRCodeResult;
import com.net.wanjian.networkhospitalmanager.bean.SearchDeviceDetailResult;
import com.net.wanjian.networkhospitalmanager.bean.SearchEvaluateResult;
import com.net.wanjian.networkhospitalmanager.bean.SearchMainRotateTeacherResult;
import com.net.wanjian.networkhospitalmanager.bean.SearchMessageListResult;
import com.net.wanjian.networkhospitalmanager.bean.SearchRotateStudentInfoListResult;
import com.net.wanjian.networkhospitalmanager.bean.SetMessageReadResult;
import com.net.wanjian.networkhospitalmanager.bean.SignResultBean;
import com.net.wanjian.networkhospitalmanager.bean.StudentApplyReserveReturn;
import com.net.wanjian.networkhospitalmanager.bean.StudentHistoryLabReserveResult;
import com.net.wanjian.networkhospitalmanager.bean.StudentLabReserveListResult;
import com.net.wanjian.networkhospitalmanager.bean.UserInfoReturn;
import com.net.wanjian.networkhospitalmanager.bean.Video.GetVideoClassifyBean;
import com.net.wanjian.networkhospitalmanager.bean.Video.GetVideoListBean;
import com.net.wanjian.networkhospitalmanager.bean.dopsminicex.GetScoreInformationBean;
import com.net.wanjian.networkhospitalmanager.bean.dopsminicex.NumberGetUserBean;
import com.net.wanjian.networkhospitalmanager.bean.dopsminicex.SearchEvaluationRecordByTeacher;
import com.net.wanjian.networkhospitalmanager.bean.dopsminicex.StudentInformationBean;
import com.net.wanjian.networkhospitalmanager.bean.evaluate.SaveEvaluationReturnResult;
import com.net.wanjian.networkhospitalmanager.bean.evaluate.SearchEventBasicInfoResult;
import com.net.wanjian.networkhospitalmanager.bean.evaluate.SearchEventEvaluateTableResult;
import com.net.wanjian.networkhospitalmanager.bean.evaluate.SearchHistoryEventTypeResult;
import com.net.wanjian.networkhospitalmanager.bean.evaluate.SearchTeacherEvaluationAllInfoListResult;
import com.net.wanjian.networkhospitalmanager.bean.teacherevent.DepartmentListResult;
import com.net.wanjian.networkhospitalmanager.bean.teacherevent.SearchEducatiationByConditionResult;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Query;

/**
 * Description:全部api接口
 * Created by lidongcai on 17/5/3.
 * Email:  lidongcaiocc@163.com
 */

public interface Api {
    /**
     * 服务器
     */
  //   String BASE_URL = "https://dt.wanjiannet.com/";
//   114.55.52.174:8086 开发 8087测试
    String BASE_URL = "http://192.168.1.123:8096/"; //dopsminicex测试
//    String BASE_URL = "http://192.168.1.119:8012/"; //简易评价测试
//   String BASE_URL = "https://114.55.52.174:8087/";

    /**
     * 获取用户图片
     * 参数1：用户ID（UserInfoID）
     * 参数2：图片类型（PhotoSizeType）
     * 标志位	说明
     * 3	小图片
     * 2	中图片
     * 1	大图片
     */
    String USER_IMAGE = "DataInterface/LabReserve/SearchUserPhoto";

    /**
     * 获取设备图片
     * 参数：设备ID（DeviceID）
     */
    String DEVICE_PHOTO = "DataInterface/LabReserve/SearchDevicePhoto";

//    @POST("/DataInterface/LabReserve/SearchUserPhoto")
//    Observable<ResponseBody> getUserImage(@Query("UserInfoLoginName") String photo, @Query("PhotoSizeType") int type);//头像

    /**
     * 获取模型训练的图片
     */
    String OPERATION_DEVICE_PHOTO = "/DataInterface/LabReserve/SearchDeviceOperationPhoto";

    /**
     * 获取客户医院列表
     *
     * @return
     */
    @POST("/DataInterface/LabReserve/SearchCustomerInfoList")
    Observable<GetHospitalListReturn> getHospitalListReturn();


    /**
     * 登录
     *
     * @param devicId   设备id
     * @param hospitaId 医院id
     * @param loginName 名字
     * @param passWord  密码
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/ValidateLogin")
    Observable<LoginReturn> userLogin(@Field("DeviceIdentity") String devicId, @Field("CustomerInfoID") String hospitaId,
                                      @Field("UserLoginName") String loginName, @Field("Password") String passWord);

    /**
     * 获取用户信息
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userInfoId
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchUserInfo")
    Observable<UserInfoReturn> getUserInfo(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                           @Field("CustomerInfoID") String hospitalId, @Field("UserInfoID") String userInfoId);

    /**
     * 获取实验室预约列表
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId 用户身份id
     * @param userIdentityTag 身份标志位
     * @param pageIndex       从0开始，第一页索引为0，依次往后……
     * @param pageSize        每页条数
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchLabReserveList")
    Observable<LabReserveListReturn> getLabreserveList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                       @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                       @Field("UserIdentityTag") String userIdentityTag, @Field("pageIndex") int pageIndex,
                                                       @Field("pageSize") int pageSize);

    /**
     * 学生申请预约
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId 用户身份id
     * @param labReserveID    实验室预约id
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/StudentApplyLabReserve")
    Observable<StudentApplyReserveReturn> studentApplyReserve(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                              @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                              @Field("LabReserveID") String labReserveID);

    /**
     * 查询学生当前预约列表
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId 用户身份id
     * @param pageIndex       页码索引（pageIndex），从0开始，第一页索引为0，依次往后……
     * @param pageSize        每页条数
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchStudentCurrentLabReserveList")
    Observable<StudentLabReserveListResult> studentLabReserveList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                  @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                  @Field("pageIndex") int pageIndex, @Field("pageSize") int pageSize);

    /**
     * 查询老师当前预约列表
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId 用户身份id
     * @param pageIndex       页码索引（pageIndex），从0开始，第一页索引为0，依次往后……
     * @param pageSize        每页条数
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchGuideTeacherCurrentLabReserveList")
    Observable<StudentLabReserveListResult> teacherLabReserveList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                  @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                  @Field("pageIndex") int pageIndex, @Field("pageSize") int pageSize);

    /**
     * 学生取消预约，参数同申请预约
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param labReserveID
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/CancelApplyLabReserve")
    Observable<StudentApplyReserveReturn> studentCancelReserve(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                               @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                               @Field("LabReserveID") String labReserveID);

    /**
     * 查看实验室预约详情
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param labReserveID 实验id
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchLabReserveInfo")
    Observable<LabReserveDetailResult> labReserveDetail(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                        @Field("CustomerInfoID") String hospitalId, @Field("LabReserveID") String labReserveID);

    /**
     * 进入实验室身份验证，必须签到后才能进入，签到为pad端扫描二维码
     * 1为签到，0为未签到
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param labReserveID
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/EnterLab")
    Observable<EnterLabResult> enterLab(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                        @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                        @Field("LabReserveID") String labReserveID);

    /**
     * 确认实验室预约回执信息（指导教师）
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param labReserveID
     * @param labReserveGuideTeacherIsReply 通知回执信息  1 - 参加 2 - 不参加
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/ConfirmLabReserveReply")
    Observable<StudentApplyReserveReturn> teacherReplyLabReserve(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                 @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                 @Field("LabReserveID") String labReserveID, @Field("LabReserveGuideTeacherIsReply") String labReserveGuideTeacherIsReply);

    //扫描二维码
    @FormUrlEncoded
    @POST("/DataInterface/Common/SearchEventBasicInfoAndSignInfoByCondition")
    Observable<SignResultBean> ScanSign(@Field("QRCodeType") String QRCodeType, @Field("EventType") String EventType, @Field("EventID") String EventID,
                                        @Field("StudentUserIdentityID") String StudentUserIdentityID, @Field("DeviceIdentity") String DeviceIdentity,
                                        @Field("Token") String Token, @Field("CustomerInfoID") String CustomerInfoID);

    //签到/签退
    @FormUrlEncoded
    @POST("/DataInterface/Common/SignInOutByCondition")
    Observable<StudentApplyReserveReturn> ScanSignInout(@Field("EventType") int EventType, @Field("EventID") String EventID, @Field("StudentUserIdentityID") String StudentUserIdentityID,
                                                        @Field("SignType") int SignType, @Field("SignStyle") int SignStyle,
                                                        @Field("QRCodeType") int QRCodeType, @Field("DeviceIdentity") String DeviceIdentity, @Field("Token") String Token, @Field("CustomerInfoID") String CustomerInfoID);

    //阿里云视频-视频分类
    @GET("http://vod.cn-shanghai.aliyuncs.com/?")
    Observable<GetVideoClassifyBean> GetVideoClassifyX(@Query("Signature") String Signature, @Query("Format") String Format, @Query("Version") String Version, @Query("SignatureMethod") String SignatureMethod, @Query("SignatureVersion") String SignatureVersion,
                                                       @Query("AccessKeyId") String AccessKeyId, @Query("Timestamp") String Timestamp, @Query("SignatureNonce") String SignatureNonce, @Query("Action") String Action, @Query("PageNo") String PageNo, @Query("PageSize") String PageSize,
                                                       @Query("CateId") String CateId);

    //阿里云-视频列表
    @GET("http://vod.cn-shanghai.aliyuncs.com/?")
    Observable<GetVideoListBean> GetVideoListX(@Query("Signature") String Signature, @Query("Format") String Format, @Query("Version") String Version, @Query("SignatureMethod") String SignatureMethod, @Query("SignatureVersion") String SignatureVersion,
                                               @Query("AccessKeyId") String AccessKeyId, @Query("Timestamp") String Timestamp, @Query("SignatureNonce") String SignatureNonce, @Query("Action") String Action, @Query("PageNo") String PageNo, @Query("PageSize") String PageSize,
                                               @Query("CateId") String CateId);

    //Dop_s扫描用户身份二维码
    @FormUrlEncoded
    @POST("/DataInterface/DopsMiniCex/ScanUserIdentityQRCode")
    Observable<StudentInformationBean> ScanUserQRcode(@Field("CustomerInfoID") String CustomerInfoID, @Field("DeviceIdentity") String DeviceIdentity, @Field("Token") String Token,
                                                      @Field("EncryptUserIdentityID") String EncryptUserIdentityID);

    //通过用户编号获取用户信息
    @FormUrlEncoded
    @POST("/DataInterface/DopsMiniCex/SearchUserInfoByCode")
    Observable<NumberGetUserBean> NumberGetUser(@Field("CustomerInfoID") String CustomerInfoID, @Field("DeviceIdentity") String DeviceIdentity, @Field("Token") String Token,
                                                @Field("UserInfoCode") String UserInfoCode);
    //获取项目打分评分表信息
    @FormUrlEncoded
    @POST("/DataInterface/DopsMiniCex/SearchEvaluationMarkSheet")
    Observable<GetScoreInformationBean> GetScoreInformationX(@Field("CustomerInfoID") String CustomerInfoID, @Field("DeviceIdentity") String DeviceIdentity, @Field("Token") String Token,
                                                             @Field("MarkSheetApplicationType") String MarkSheetApplicationType);

    /**
     * 扫描二维码替换指导教师
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param labReserveID
     * @param encryptUserIdentityID 用户身份ID加密字符串,该字符串通过扫描替换教师二维码获得
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/ReplaceGuidTeacher")
    Observable<StudentApplyReserveReturn> replaceGuidTeacher(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                             @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                             @Field("LabReserveID") String labReserveID, @Field("EncryptUserIdentityID") String encryptUserIdentityID);

    /**
     * 获取实验模型训练列表
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param labReserveMemberID 实验室预约人员ID
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchDeviceOperationList")
    Observable<DeviceOperationListResult> getDeviceOperationList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                 @Field("CustomerInfoID") String hospitalId, @Field("LabReserveMemberID") String labReserveMemberID);

    /**
     * 依据二维码查询模型的基本信息，并添加到用户的操作记录中
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param labReserveID
     * @param encryptDeviceID 设备ID加密字符串，该字符串通过扫描设备模型二维码获得
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/ScanDeviceQRCode")
    Observable<ScanDeviceQRCodeResult> scanQRcodeGetDeviceInfo(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                               @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                               @Field("LabReserveID") String labReserveID, @Field("EncryptDeviceID") String encryptDeviceID);

    /**
     * 查询模型训练详情
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param labReserveMemberOperationID 实验室预约人员操作ID
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchDeviceOperationInfo")
    Observable<SearchDeviceDetailResult> searchDeviceDetail(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                            @Field("CustomerInfoID") String hospitalId, @Field("LabReserveMemberOperationID") String labReserveMemberOperationID);


    /**
     * 保存模型训练结果，图片和文字
     * 参数1：实验室预约人员操作ID（LabReserveMemberOperationID）
     * 参数2：心得体会（OperationExperience）
     * 参数3：训练照片，二进制流 (LabReserveMemberOperationImageContent_0, LabReserveMemberOperationImageContent_1 ...)
     * 参数4 : 图片数量(ImageCount)
     *
     * @param params
     * @param parts
     * @return
     */
    @Multipart
    @POST("/DataInterface/LabReserve/SaveDeviceOperationResult")
    Observable<StudentApplyReserveReturn> saveDeviceOperationImageUpload(@PartMap Map<String, RequestBody> params,
                                                                         @Part List<MultipartBody.Part> parts);

    /**
     * 删除模型训练记录
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param labReserveMemberOperationID
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/RemoveDeviceOperation")
    Observable<StudentApplyReserveReturn> removeDeviceOperation(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,

                                                                @Field("CustomerInfoID") String hospitalId, @Field("LabReserveMemberOperationID") String labReserveMemberOperationID);

    /**
     * 查询学生历史预约列表
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchStudentPastLabReserveList")
    Observable<StudentHistoryLabReserveResult> studentHistoryLabReserveList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                            @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                            @Field("pageIndex") int pageIndex, @Field("pageSize") int pageSize);

    //－－－－－－教学事件api－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－

    /**
     * 查询科室选择条件
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/EducationActivity/SearchEducatiationActivityQueryCondition")
    Observable<DepartmentListResult> getDepartmentList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                       @Field("CustomerInfoID") String hospitalId);

    /**
     * 查询教学事件列表（科室或专业方向）
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param departmentID queryType为3设置科室id的值，如果为2传null即可
     * @param queryType    2 - 全部科室 3 - 具体科室
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/EducationActivity/SearchEducatiationActivityByCondition")
    Observable<SearchEducatiationByConditionResult> SearchEducatiationActivityByCondition(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                                          @Field("CustomerInfoID") String hospitalId, @Field("DepartmentID") String departmentID,
                                                                                          @Field("QueryType") int queryType, @Field("PageIndex") int pageIndex,
                                                                                          @Field("PageSize") int pageSize);

    /**
     * 关键字查询（教学事件名称和主讲人的名称）
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param EducatiationActivityKeyword 查询关键字
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/EducationActivity/SearchEducatiationActivityByKeyword")
    Observable<SearchEducatiationByConditionResult> searchEducatiationActivityByKeyword(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                                        @Field("CustomerInfoID") String hospitalId,
                                                                                        @Field("EducatiationActivityKeyword") String EducatiationActivityKeyword,
                                                                                        @Field("PageIndex") int pageIndex, @Field("PageSize") int pageSize);


    /**
     * 修改个人密码
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userInfoId
     * @param userInfoOldPassword 用户旧密码，MD5加密过的密码
     * @param userInfoNewPassword 用户新密码，MD5加密过的密码
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Common/SaveModifyUserPasswordByCondition")
    Observable<StudentApplyReserveReturn> saveModifyUserPassword(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                 @Field("CustomerInfoID") String hospitalId, @Field("UserInfoID") String userInfoId,
                                                                 @Field("UserInfoOldPassword") String userInfoOldPassword, @Field("UserInfoNewPassword") String userInfoNewPassword);


    /**
     * 获取消息通知列表，条件查询
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param messageTag              消息通知标签，多个用,分隔
     * @param pageIndex
     * @param pageSize
     * @param messageContentEventType 事件类型 全部：-1，实验室预约：0，教学行为：1
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SearchMessageList")
    Observable<SearchMessageListResult> searchMessageList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                          @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                          @Field("MessageTag") String messageTag, @Field("PageIndex") int pageIndex,
                                                          @Field("PageSize") int pageSize, @Field("MessageContentEventType") int messageContentEventType);

    /**
     * 设置消息通知为已读
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param messageContentIDString 消息通知ID集合，ID之间用英文逗号隔开
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/LabReserve/SetMessageRead")
    Observable<SetMessageReadResult> setMessageRead(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                    @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                    @Field("MessageContentIDString") String messageContentIDString);

    /**********************轮转api*******************************/


    /**
     * 学生获取规培导师
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param userIdentityTag 身份标志位
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/StudentManagement/SearchMainTeacherList")
    Observable<SearchMainRotateTeacherResult> searchMainTeacherList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                    @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                    @Field("UserIdentityTag") String userIdentityTag);

    /**
     * 学生获取轮转信息
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param userIdentityTag
     * @param rotationYear
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/RotationManagement/SearchRotationSchedulingList")
    Observable<SearchRotateStudentInfoListResult> searchRotationSchedulingList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                               @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                               @Field("UserIdentityTag") String userIdentityTag, @Field("RotationYear") String rotationYear);

    /**********************事件评价api*******************************/

    /**
     * 获取历史事件类型和标签
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Evaluation/SearchHistoricalEventType")
    Observable<SearchHistoryEventTypeResult> searchHistoryEventType(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                    @Field("CustomerInfoID") String hospitalId);

    /**
     * 查询事件列表接口（教学事件、考核事件、培训事件、公共事件）
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param loginPersonRole 登陆人角色，老师or学生
     * @param eventExtendType 事件评价类型 0：全部；1：教学事件；2：培训事件；3：考核事件；4：公共事件；5：待评价
     * @param pageIndex       当前页数
     * @param pageSize        每页个数
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Evaluation/SearchEventList")
    Observable<SearchEvaluateResult> searchHistoryEventList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                            @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                            @Field("LoginPersonRole") String loginPersonRole, @Field("EventExtendType") String eventExtendType,
                                                            @Field("PageIndex") int pageIndex, @Field("PageSize") int pageSize);


    /**
     * 分别查询对人、对事的评价基本信息和老师信息
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param eventID    事件ID
     * @param eventType  事件类型
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Evaluation/SearchEventBasicInfo")
    Observable<SearchEventBasicInfoResult> searchEventBasicInfo(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                @Field("CustomerInfoID") String hospitalId, @Field("EventID") String eventID,
                                                                @Field("EventType") String eventType);


    /**
     * 分别查询对人、对事的评价详细信息（可分类查询全部、好评、中评、差评）
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param eventType                 0：教学事件；1：考核事件；3：实验室预约；4：公共事件；
     * @param eventID                   事件ID
     * @param beEvaluatedUserIdentityID 老师的用户身份ID
     * @param evaluationType            0:教师评价 1:事件评价
     * @param resultType                目前为:好\中\差 ;0:全部 1:好评 2:中评 3 差评
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Evaluation/SearchEvaluationTableList")
    Observable<SearchTeacherEvaluationAllInfoListResult> searchEvaluationTableList(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                                   @Field("CustomerInfoID") String hospitalId, @Field("EventType") String eventType,
                                                                                   @Field("EventID") String eventID, @Field("BeEvaluatedUserIdentityID") String beEvaluatedUserIdentityID,
                                                                                   @Field("EvaluationType") int evaluationType, @Field("ResultType") int resultType,
                                                                                   @Field("PageIndex") int pageIndex, @Field("PageSize") int pageSize);

    /**
     * 去评价 获取评价项等信息
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param loginPersonRole
     * @param eventID
     * @param eventType
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Evaluation/SearchEventEvaluationTableList")
    Observable<SearchEventEvaluateTableResult> searchEvaluateTable(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                   @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                   @Field("LoginPersonRole") String loginPersonRole, @Field("EventID") String eventID,
                                                                   @Field("EventType") String eventType);

    /**
     * 保存评价信息
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param loginPersonRole         登陆人角色
     * @param eventType               事件类型
     * @param eventID                 事件ID
     * @param userIndentityId         用户身份ID
     * @param evaluationItemValueList 评价项集合 json格式 SaveEvaluationItemBean
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/Evaluation/SaveEvaluationTableInfo")
    Observable<SaveEvaluationReturnResult> saveEvaluationTableInfo(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                   @Field("CustomerInfoID") String hospitalId, @Field("LoginPersonRole") String loginPersonRole,
                                                                   @Field("EventType") String eventType, @Field("EventID") String eventID,
                                                                   @Field("EvaluatorUserIdentityID") String userIndentityId, @Field("EvaluationItemValueList") String evaluationItemValueList);


    /**
     * String route= gson.toJson(flyRouteBean);//通过Gson将Bean转化为Json字符串形式
     * RequestBody body=RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),route);
     */

/**************************dopsminicex*******************************/

    /**
     * 获取Dops/Mini-cex评价记录列表（教师）
     *
     * @param deviceId
     * @param token
     * @param hospitalId
     * @param userIndentityId
     * @param pageIndex
     * @param pageSize
     * @param evaluationRecordType
     * @return
     */
    @FormUrlEncoded
    @POST("/DataInterface/DopsMiniCex/SearchEvaluationRecordListByTeacher")
    Observable<SearchEvaluationRecordByTeacher> SearchEvaluationRecordListByTeacher(@Field("DeviceIdentity") String deviceId, @Field("Token") String token,
                                                                                    @Field("CustomerInfoID") String hospitalId, @Field("UserIdentityID") String userIndentityId,
                                                                                    @Field("pageIndex") int pageIndex,
                                                                                    @Field("pageSize") int pageSize, @Field("EvaluationRecordType") int evaluationRecordType);


}

